#ifndef __BOSS_COMPONENTS_CLASS_FACTORY_IFACES_H__
#define __BOSS_COMPONENTS_CLASS_FACTORY_IFACES_H__

#include "../../../include/ifaces_core.h"

namespace Boss
{

	struct IServiceRegistry;

	struct IClassFactoryCtrl
		: public IBase
	{
		BOSS_DECLARE_IFACE_UUID(4b8ef9f9-156b-4dbc-bd57-46caf65cb45f)

		virtual TResult BOSS_CALL_TYPE SetRegistry(IServiceRegistry *registry) = 0;
	};

	struct IClassFactory
		: public IBase
	{
		BOSS_DECLARE_IFACE_UUID(592103bd-03ff-4d90-bfc3-5aaddb84a796)

		virtual TResult BOSS_CALL_TYPE CreateObject(TGuid coClassId, TPtr *instance) = 0;
	};

}

#endif	// !__BOSS_COMPONENTS_CLASS_FACTORY_IFACES_H__
